#include<bits/stdc++.h>
#define int long long
#define ld long double
#define N 505
using namespace std;
int n,m;
ld f[N][N];
ld ans=1e16;
struct node{
    int a,b;
}p[N];
bool cmp(node x,node y){
    return x.b<y.b;
}
void Min(ld &x,ld y){if(y<x) x=y;}
void sol(int j){
    for(int i=0;i<=m;i++)
        for(int k=0;k<=m;k++) f[i][k]=1e16;
    f[0][0]=0;
    for(int i=1;i<=n;i++){
        for(int k=j;k>=0;k--)
            for(int l=m-j;l>=0;l--){
                if(l<m-j) Min(f[k][l+1],f[k][l]+(ld)p[i].a/(j+1));
                if(k+1<=j&&p[i].b!=1e18) Min(f[k+1][l],f[k][l]+(ld)p[i].b/(k+1));
            }
    }
    ans=min(ans,f[j][m-j]);
}
signed main(){
    freopen("talk.in","r",stdin);
    freopen("talk.out","w",stdout);
    scanf("%lld",&n);
    scanf("%lld",&m);
    for(int i=1;i<=n;i++) scanf("%lld %lld",&p[i].a,&p[i].b);
    for(int i=1;i<=n;i++) if(p[i].b==-1) p[i].b=1e18;
    sort(p+1,p+n+1,cmp);
    for(int i=0;i<=m;i++) sol(i);
    printf("%.12Lf",ans);
    return 0;
}